package com.lqz.tools;

import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.tnc.model.*;

import freemarker.core.ParseException;
import freemarker.template.Configuration;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateNotFoundException;
import freemarker.template.Version;

public class Test1 {

	public static void main(String[] args) throws IOException, TemplateException {
		PropertyDescriptor[] props = null;
		try {
			props = Introspector.getBeanInfo(new AllDataSearch().getClass(), Object.class).getPropertyDescriptors();
		} catch (IntrospectionException e) {
		}
		
		// javaBean的属性和属性类型
		List property = new ArrayList();
		List propertyType = new ArrayList();
		if (props != null) {
			for (int i = 0; i < props.length; i++) {
				try {
					String aa = props[i].getName();// 获取bean中的属性
					property.add(i, aa);
					Object object = props[i].getPropertyType();// 获取属性的类型
					propertyType.add(i, object);
				} catch (Exception e) {
				}
			}
		}
		// 创建Freemarker配置实例
				Configuration cfg = new Configuration(new Version("2.3.25"));
				cfg.setDirectoryForTemplateLoading(new File("D:/spring-web/TNC/src/template"));
		String fileName = "allDataSearch";
		String tile = "生产线数据查询";
		String name = "生产线数据";
		String claaName = "AllDataSearch";
		String id = "md_allData_id";
		String key = "packM_sap";
		String[] colu = (new AllDataSearch()).toString().split(",");
		String[] columnName = { "	封装组件SAP号	", "	封装组件序列号	", "	工艺过程序号	", "	工艺过程Cycle Time(s)	",
				"	此工艺过程完成生产日期时间	", "	生产线编号	", "	位置1衬垫序列号	", "	位置1衬垫批次号	", "	位置1衬垫称重设备编号	",
				"	位置1衬垫重量	", "	位置1衬垫是否合格	", "	位置2衬垫序列号	", "	位置2衬垫批次号	", "	位置2衬垫称重设备编号	",
				"	位置2衬垫重量	", "	位置2衬垫是否合格	", "	位置3衬垫序列号	", "	位置3衬垫批次号	", "	位置3衬垫称重设备编号	",
				"	位置3衬垫重量	", "	位置3衬垫是否合格	", "	位置1载体#1 2DMC追溯号	", "	位置1载体#1已重复使用次数	",
				"	位置1载体#1测量测量设备编号	", "	位置1载体#1测量配方号与版本	", "	位置1载体#1测量平面序号	", "	位置1载体#1最小直径（每个平面）	",
				"	位置1载体#1最大直径（每个平面）	", "	位置1载体#1周长（每个平面）	", "	位置1载体#1周长（所有平面）	", "	位置1载体#1面积（每个平面）	",
				"	位置1载体#1面积（所有平面）	", "	位置1载体#1平均直径（每个平面）	", "	位置1载体#1平均直径（所有平面）	", "	位置1载体#1载体高度	",
				"	位置1载体#1是否合格	", "	位置1载体#1测量环境温度	", "	位置1载体#2 2DMC追溯号	", "	位置1载体#2已重复使用次数	",
				"	位置1载体#2测量测量设备编号	", "	位置1载体#2测量配方号与版本	", "	位置1载体#2测量平面序号	", "	位置1载体#2最小直径（每个平面）	",
				"	位置1载体#2最大直径（每个平面）	", "	位置1载体#2周长（每个平面）	", "	位置1载体#2周长（所有平面）	", "	位置1载体#2面积（每个平面）	",
				"	位置1载体#2面积（所有平面）	", "	位置1载体#2平均直径（每个平面）	", "	位置1载体#2平均直径（所有平面）	", "	位置1载体#2载体高度	",
				"	位置1载体#2是否合格	", "	位置1载体#2测量环境温度	", "	位置2载体#1 2DMC追溯号	", "	位置2载体#1已重复使用次数	",
				"	位置2载体#1测量测量设备编号	", "	位置2载体#1测量配方号与版本	", "	位置2载体#1测量平面序号	", "	位置2载体#1最小直径（每个平面）	",
				"	位置2载体#1最大直径（每个平面）	", "	位置2载体#1周长（每个平面）	", "	位置2载体#1周长（所有平面）	", "	位置2载体#1面积（每个平面）	",
				"	位置2载体#1面积（所有平面）	", "	位置2载体#1平均直径（每个平面）	", "	位置2载体#1平均直径（所有平面）	", "	位置2载体#1载体高度	",
				"	位置2载体#1是否合格	", "	位置2载体#1测量环境温度	", "	位置2载体#2 2DMC追溯号	", "	位置2载体#2已重复使用次数	",
				"	位置2载体#2测量测量设备编号	", "	位置2载体#2测量配方号与版本	", "	位置2载体#2测量平面序号	", "	位置2载体#2最小直径（每个平面）	",
				"	位置2载体#2最大直径（每个平面）	", "	位置2载体#2周长（每个平面）	", "	位置2载体#2周长（所有平面）	", "	位置2载体#2面积（每个平面）	",
				"	位置2载体#2面积（所有平面）	", "	位置2载体#2平均直径（每个平面）	", "	位置2载体#2平均直径（所有平面）	", "	位置2载体#2载体高度	",
				"	位置2载体#2是否合格	", "	位置2载体#2测量环境温度	", "	位置3载体#1 2DMC追溯号	", "	位置3载体#1已重复使用次数	",
				"	位置3载体#1测量测量设备编号	", "	位置3载体#1测量配方号与版本	", "	位置3载体#1测量平面序号	", "	位置3载体#1最小直径（每个平面）	",
				"	位置3载体#1最大直径（每个平面）	", "	位置3载体#1周长（每个平面）	", "	位置3载体#1周长（所有平面）	", "	位置3载体#1面积（每个平面）	",
				"	位置3载体#1面积（所有平面）	", "	位置3载体#1平均直径（每个平面）	", "	位置3载体#1平均直径（所有平面）	", "	位置3载体#1载体高度	",
				"	位置3载体#1是否合格	", "	位置3载体#1测量环境温度	", "	位置3载体#2 2DMC追溯号	", "	位置3载体#2已重复使用次数	",
				"	位置3载体#2测量测量设备编号	", "	位置3载体#2测量配方号与版本	", "	位置3载体#2测量平面序号	", "	位置3载体#2最小直径（每个平面）	",
				"	位置3载体#2最大直径（每个平面）	", "	位置3载体#2周长（每个平面）	", "	位置3载体#2周长（所有平面）	", "	位置3载体#2面积（每个平面）	",
				"	位置3载体#2面积（所有平面）	", "	位置3载体#2平均直径（每个平面）	", "	位置3载体#2平均直径（所有平面）	", "	位置3载体#2载体高度	",
				"	位置3载体#2是否合格	", "	位置3载体#2测量环境温度	", "	位置1包裹组件塞入顺序	", "	位置1包裹组件塞入设备编号与塞入端	",
				"	位置1包裹组件塞入时间	", "	位置1包裹组件塞入位置	", "	位置1包裹组件塞入过程峰值力	", "	位置1包裹组件塞入过程峰值力产生位置	",
				"	位置2包裹组件塞入顺序	", "	位置2包裹组件塞入设备编号与塞入端	", "	位置2包裹组件塞入时间	", "	位置2包裹组件塞入位置	",
				"	位置2包裹组件塞入过程峰值力	", "	位置2包裹组件塞入过程峰值力产生位置	", "	位置3包裹组件塞入顺序	", "	位置3包裹组件塞入设备编号与塞入端	",
				"	位置3包裹组件塞入时间	", "	位置3包裹组件塞入位置	", "	位置3包裹组件塞入过程峰值力	", "	位置3包裹组件塞入过程峰值力产生位置	",
				"	位置1载体1#整形顺序	", "	位置1载体1#整形设备编号	", "	位置1载体#1整形配方号与版本	", "	位置1载体1#整形时间	",
				"	位置1载体1#整形目标值计算方式	", "	位置1载体1#整形目标值	", "	位置1载体1#整形补偿后目标值	", "	位置1载体1#整形机实际加工值	",
				"	位置1载体2#整形顺序	", "	位置1载体2#整形设备编号	", "	位置1载体#2整形配方号与版本	", "	位置1载体2#整形时间	",
				"	位置1载体2#整形目标值计算方式	", "	位置1载体2#整形目标值	", "	位置1载体2#整形补偿后目标值	", "	位置1载体2#整形机实际加工值	",
				"	位置2载体1#整形顺序	", "	位置2载体1#整形设备编号	", "	位置2载体#1整形配方号与版本	", "	位置2载体1#整形时间	",
				"	位置2载体1#整形目标值计算方式	", "	位置2载体1#整形目标值	", "	位置2载体1#整形补偿后目标值	", "	位置2载体1#整形机实际加工值	",
				"	位置2载体2#整形顺序	", "	位置2载体2#整形设备编号	", "	位置2载体#2整形配方号与版本	", "	位置2载体2#整形时间	",
				"	位置2载体2#整形目标值计算方式	", "	位置2载体2#整形目标值	", "	位置2载体2#整形补偿后目标值	", "	位置2载体2#整形机实际加工值	",
				"	位置3载体1#整形顺序	", "	位置3载体1#整形设备编号	", "	位置3载体#1整形配方号与版本	", "	位置3载体1#整形时间	",
				"	位置3载体1#整形目标值计算方式	", "	位置3载体1#整形目标值	", "	位置3载体1#整形补偿后目标值	", "	位置3载体1#整形机实际加工值	",
				"	位置3载体2#整形顺序	", "	位置3载体2#整形设备编号	", "	位置3载体#2整形配方号与版本	", "	位置3载体2#整形时间	",
				"	位置3载体2#整形目标值计算方式	", "	位置3载体2#整形目标值	", "	位置3载体2#整形补偿后目标值	", "	位置3载体2#整形机实际加工值	",
				"	进气端口整形顺序	", "	进气端口整形设备编号	", "	进气端口整形配方号与版本	", "	进气端口整形时间	",
				"	进气端口整形目标值计算方式	", "	进气端口整形目标值	", "	进气端口整形补偿后目标值	", "	进气端口整形机实际加工值	",
				"	出气端口整形顺序	", "	出气端口整形设备编号	", "	出气端口整形配方号与版本	", "	出气端口整形时间	",
				"	出气端口整形目标值计算方式	", "	出气端口整形目标值	", "	出气端口整形补偿后目标值	", "	出气端口整形机实际加工值	",
				"	组件重复测量次数	", "	组件测量设备编号	", "	组件测量配方号与版本	", "	组件位置1载体#1测量平面序号	",
				"	组件位置1载体#1最小直径（每个平面）	", "	组件位置1载体#1最大直径（每个平面）	", "	组件位置1载体#1周长（每个平面）	",
				"	组件位置1载体#1周长（所有平面）	", "	组件位置1载体#1面积（每个平面）	", "	组件位置1载体#1面积（所有平面）	",
				"	组件位置1载体#1平均直径（每个平面）	", "	组件位置1载体#1平均直径（所有平面）	", "	组件位置1载体#1特殊特性值计算方式	",
				"	组件位置1载体#1特殊特性值（每个平面）	", "	组件位置1载体#1特殊特性值（所有平面）	", "	组件位置1载体#1整形区域是否合格	",
				"	组件位置1载体#2测量平面序号	", "	组件位置1载体#2最小直径（每个平面）	", "	组件位置1载体#2最大直径（每个平面）	",
				"	组件位置1载体#2周长（每个平面）	", "	组件位置1载体#2周长（所有平面）	", "	组件位置1载体#2面积（每个平面）	",
				"	组件位置1载体#2面积（所有平面）	", "	组件位置1载体#2平均直径（每个平面）	", "	组件位置1载体#2平均直径（所有平面）	",
				"	组件位置1载体#2特殊特性值计算方式	", "	组件位置1载体#2特殊特性值（每个平面）	", "	组件位置1载体#2特殊特性值（所有平面）	",
				"	组件位置1载体#2整形区域是否合格	", "	组件位置2载体#1测量平面序号	", "	组件位置2载体#1最小直径（每个平面）	",
				"	组件位置2载体#1最大直径（每个平面）	", "	组件位置2载体#1周长（每个平面）	", "	组件位置2载体#1周长（所有平面）	",
				"	组件位置2载体#1面积（每个平面）	", "	组件位置2载体#1面积（所有平面）	", "	组件位置2载体#1平均直径（每个平面）	",
				"	组件位置2载体#1平均直径（所有平面）	", "	组件位置2载体#1特殊特性值计算方式	", "	组件位置2载体#1特殊特性值（每个平面）	",
				"	组件位置2载体#1特殊特性值（所有平面）	", "	组件位置2载体#1整形区域是否合格	", "	组件位置2载体#2测量平面序号	",
				"	组件位置2载体#2最小直径（每个平面）	", "	组件位置2载体#2最大直径（每个平面）	", "	组件位置2载体#2周长（每个平面）	",
				"	组件位置2载体#2周长（所有平面）	", "	组件位置2载体#2面积（每个平面）	", "	组件位置2载体#2面积（所有平面）	",
				"	组件位置2载体#2平均直径（每个平面）	", "	组件位置2载体#2平均直径（所有平面）	", "	组件位置2载体#2特殊特性值计算方式	",
				"	组件位置2载体#2特殊特性值（每个平面）	", "	组件位置2载体#2特殊特性值（所有平面）	", "	组件位置2载体#2整形区域是否合格	",
				"	组件位置3载体#1测量平面序号	", "	组件位置3载体#1最小直径（每个平面）	", "	组件位置3载体#1最大直径（每个平面）	",
				"	组件位置3载体#1周长（每个平面）	", "	组件位置3载体#1周长（所有平面）	", "	组件位置3载体#1面积（每个平面）	",
				"	组件位置3载体#1面积（所有平面）	", "	组件位置3载体#1平均直径（每个平面）	", "	组件位置3载体#1平均直径（所有平面）	",
				"	组件位置3载体#1特殊特性值计算方式	", "	组件位置3载体#1特殊特性值（每个平面）	", "	组件位置3载体#1特殊特性值（所有平面）	",
				"	组件位置3载体#1整形区域是否合格	", "	组件位置3载体#2测量平面序号	", "	组件位置3载体#2最小直径（每个平面）	",
				"	组件位置3载体#2最大直径（每个平面）	", "	组件位置3载体#2周长（每个平面）	", "	组件位置3载体#2周长（所有平面）	",
				"	组件位置3载体#2面积（每个平面）	", "	组件位置3载体#2面积（所有平面）	", "	组件位置3载体#2平均直径（每个平面）	",
				"	组件位置3载体#2平均直径（所有平面）	", "	组件位置3载体#2特殊特性值计算方式	", "	组件位置3载体#2特殊特性值（每个平面）	",
				"	组件位置3载体#2特殊特性值（所有平面）	", "	组件位置3载体#2整形区域是否合格	", "	组件进气端口平均直径	", "	组件进气端口最小直径	",
				"	组件进气端口最大直径	", "	组件进气端口是否合格	", "	组件出气端口平均直径	", "	组件出气端口最小直径	", "	组件出气端口最大直径	",
				"	组件出气端口是否合格	", "	组件高度	", "	组件是否合格	", "	组件测量环境温度	", "	工艺过程序号	",
				"	标刻内容配方号与版本	", "	标刻客户2DMC内容	", "	扫描客户2DMC内容	", "	扫描客户2DMC等级	" };
		String[] columnName3 = { "	封装组件的sap号	", "	生产线编号	", "	工艺过程序号	", "	衬垫位置1在组件中衬垫位置序号	",
				"	衬垫位置2在组件中衬垫位置序号	", "	载体1在组件中衬垫中载体位置序号	", "	载体2在组件中衬垫中载体位置序号	",
				"	载体3在组件中衬垫中载体位置序号	", "	位置1衬垫重量设定值	", "	位置1重量上差设定值	", "	位置1重量下差设定值	",
				"	位置1自动校准间隔设定值	", "	位置1衬垫设备编号设定值	", "	位置1机械手配方号设定值	", "	位置1是否使用该称重工位	",
				"	位置2衬垫重量设定值	", "	位置2重量上差设定值	", "	位置2重量下差设定值	", "	位置2自动校准间隔设定值	",
				"	位置2衬垫设备编号设定值	", "	位置2机械手配方号设定值	", "	位置2是否使用该称重工位	", "	壳体传送伺服停止延时时间	",
				"	壳体传送速度	", "	扫描配方号+版本号	", "	壳体上料传送带速度设定值	", "	壳体检测相机配方号设定值	",
				"	壳体水平移动伺服位置设定值	", "	壳体水平移动伺服速度设定值	", "	壳体旋转伺服快速速度设定值	", "	壳体旋转伺服慢速速度设定值	",
				"	载体#1测量测量设备编号	", "	载体#1测量配方号与版本	", "	载体#12D扫描枪位置	", "	载体#12D扫描枪运动速度	",
				"	载体1抓取机械手配方号	", "	载体#2测量测量设备编号	", "	载体#2测量配方号与版本	", "	载体#22D扫描枪位置	",
				"	载体#22D扫描枪运动速度	", "	载体2抓取机械手配方号	", "	载体#3测量测量设备编号	", "	载体#3测量配方号与版本	",
				"	载体#32D扫描枪位置	", "	载体#32D扫描枪运动速度	", "	载体3抓取机械手配方号	", "	载体上料传送带速度设定值	",
				"	载体废料传送带速度设定值	", "	水平伺服速度设定值	", "	水平伺服位置设定值	", "	垂直伺服速度设定值	", "	垂直伺服位置设定值	",
				"	是否使用该伺服抓取工位	", "	位置1包裹组件塞入设备编号与塞入端	", "	位置1包裹组件塞入位置	", "	位置1包裹组件塞入配方	",
				"	位置1包裹组件塞入顺序	", "	位置2包裹组件塞入设备编号与塞入端	", "	位置2包裹组件塞入位置	", "	位置2包裹组件塞入配方	",
				"	位置2包裹组件塞入顺序	", "	包裹伺服速度设定值	", "	包裹伺服位置设定值	", "	衬垫包裹锁紧缸压力上限（N）	",
				"	衬垫包裹锁紧缸压力下限（N）	", "	衬垫包裹支撑缸压力上限（N）	", "	衬垫包裹支撑缸压力下限（N）	", "	是否使用该衬垫包裹工位	",
				"	位置1塞入伺服位置1设置值	", "	位置1塞入1伺服速度1设置值	", "	位置1塞入力1设置值	", "	位置1塞入力1上差设置值	",
				"	位置1塞入力1下差设置值	", "	位置1塞入伺服位置2设置值	", "	位置1塞入伺服速度2设置值	", "	位置1塞入力2设置值	",
				"	位置1塞入力2上差设置值	", "	位置1塞入力2下差设置值	", "	位置1塞入伺服位置3设置值	", "	位置1塞入伺服速度3设置值	",
				"	位置1塞入力3设置值	", "	位置1塞入力3上差设置值	", "	位置1塞入力3下差设置值	", "	位置1塞入伺服位置4设置值	",
				"	位置1塞入伺服速度4设置值	", "	位置1塞入力4设置值	", "	位置1塞入力4上差设置值	", "	位置1塞入力4下差设置值	",
				"	位置1塞入机编号	", "	位置1塞入位置计算方式（1。。。4）	", "	位置1壳体长度上限（mm）	", "	位置1壳体长度下限（mm）	",
				"	位置1塞入端部工装长度mm	", "	位置1塞入调整间隔块长度mm	", "	位置1伺服原点距基准面距离mm	", "	位置1包裹工装代号（string）	",
				"	位置2塞入伺服位置1设置值	", "	位置2塞入伺服速度1设置值	", "	位置2塞入力1设置值	", "	位置2塞入力1上差设置值	",
				"	位置2塞入力1下差设置值	", "	位置2塞入伺服位置2设置值	", "	位置2塞入伺服速度2设置值	", "	位置2塞入力2设置值	",
				"	位置2塞入力2上差设置值	", "	位置2塞入力2下差设置值	", "	位置2塞入伺服位置3设置值	", "	位置2塞入伺服速度3设置值	",
				"	位置2塞入力3设置值	", "	位置2塞入力3上差设置值	", "	位置2塞入力3下差设置值	", "	位置2塞入伺服位置4设置值	",
				"	位置2塞入伺服速度4设置值	", "	位置2塞入力4设置值	", "	位置2塞入力4上差设置值	", "	位置2塞入力4下差设置值	",
				"	位置2塞入机编号	", "	位置2塞入位置计算方式（1。。。4）	", "	位置2壳体长度上限（mm）	", "	位置2壳体长度下限（mm）	",
				"	位置2塞入端部工装长度mm	", "	位置2塞入调整间隔块长度mm	", "	位置2伺服原点距基准面距离mm	", "	位置2包裹工装代号（string）	",
				"	衬垫机械手1配方号	", "	机械手动作程序代号	", "	衬垫机械手2配方号	", "	机械手动作程序代号	", "	载体机械手配方号	",
				"	机械手动作程序代号	", "	机械手A爪气压上限值	", "	机械手A爪气压下限值	", "	机械手B爪气压上限值	", "	机械手B爪气压下限值	",
				"	位置1载体#1整形设备编号	", "	位置1载体#1整形配方号与版本	", "	位置1载体#1整形目标值计算方式	", "	位置1载体#1整形目标值	",
				"	位置1载体#1整形补偿后目标值	", "	位置1载体#1端计算方式选择（GAP、GBD、IMD、固定直径、无）	", "	位置1载体#1端整形区域位置（mm）	",
				"	位置1载体#1端整形区域位置公差（mm）	", "	位置1载体#1端固定参数选择	", "	位置1载体#1端固定参数目标整形直径（mm）	",
				"	位置1载体#1整径液压压力	", "	位置1载体#1整径液压速度	", "	位置1载体#1整形顺序	", "	位置1载体#2整形设备编号	",
				"	位置1载体#2整形配方号与版本	", "	位置1载体#2整形目标值计算方式	", "	位置1载体#2整形目标值	", "	位置1载体#2整形补偿后目标值	",
				"	位置1载体#2端计算方式选择（GAP、GBD、IMD、固定直径、无）	", "	位置1载体#2端整形区域位置（mm）	", "	位置1载体#2端整形区域位置公差（mm）	",
				"	位置1载体#2端固定参数选择	", "	位置1载体#2端固定参数目标整形直径（mm）	", "	位置1载体#2整径液压压力	", "	位置1载体#2整径液压速度	",
				"	位置1载体#2整形顺序	", "	位置2载体#1整形设备编号	", "	位置2载体#1整形配方号与版本	", "	位置2载体#1整形目标值计算方式	",
				"	位置2载体#1整形目标值	", "	位置2载体#1整形补偿后目标值	", "	位置2载体#1端计算方式选择（GAP、GBD、IMD、固定直径、无）	",
				"	位置2载体#1端整形区域位置（mm）	", "	位置2载体#1端整形区域位置公差（mm）	", "	位置2载体#1端固定参数选择	",
				"	位置2载体#1端固定参数目标整形直径（mm）	", "	位置2载体#1整径液压压力	", "	位置2载体#1整径液压速度	", "	位置2载体#1整形顺序	",
				"	进气端口整形设备编号	", "	进气端口整形配方号与版本	", "	进气端口整形目标值计算方式	", "	进气端口整形目标值	",
				"	进气端口整形补偿后目标值	", "	进气端口整形顺序	", "	出气端口整形设备编号	", "	出气端口整形配方号与版本	",
				"	出气端口整形目标值计算方式	", "	出气端口整形目标值	", "	出气端口整形补偿后目标值	", "	出气端口整形顺序	", "	激光测量3配方	",
				"	LMM3 配方号和版本号	", "	总成机械手配方号	", "	机械手动作程序代号	", "	机械手A爪气压上限值	", "	机械手A爪气压下限值	",
				"	机械手B爪气压上限值	", "	机械手B爪气压下限值	", "	LMM3 设备编号	", "	LMM3 2D扫描枪位置	",
				"	LMM3 2D扫描枪运动速度	", "	伺服电机位置（mm）	", "	伺服电机速度（mm/s）	", "	夹爪气压上限（N）	",
				"	夹爪气压下限（N）	", "	传送电机速度（mm/s）	", "	二维码内容	", "	当前产品计数（万）	", "	开班时间（小时）	",
				"	开班时间（分）	", "	开班时间（秒）	", "	下班时间（小时）	", "	下班时间（分）	", "	下班时间（秒）	",
				"	计数清零方式选择（天、周、月、年、不清零）	", "	2D扫描配方名	", "	2D码内容	", "	扫描枪伺服位置	", "	扫描枪伺服速度	",
				"	长传送带速度	", "	短传送带速度	"

		};
		String[] columnName1 = { "  序号  ", "  封装组件SAP号  ", "  封装组件序列号 ", "  工艺过程序号  ", "  工艺过程Cycle Time(s) ",
				"  此工艺过程完成生产日期时间 ", "  生产线编号 ", "  位置1衬垫序列号  ", "  位置1衬垫批次号  ", "  位置1衬垫称重设备编号 ", "  位置1衬垫重量 ",
				"  位置1衬垫是否合格 ", "  位置2衬垫序列号  ", "  位置2衬垫批次号  ", "  位置2衬垫称重设备编号 ", "  位置2衬垫重量 ", "  位置2衬垫是否合格 ",
				"  位置3衬垫序列号  ", "  位置3衬垫批次号  ", "  位置3衬垫称重设备编号 ", "  位置3衬垫重量 ", "  位置3衬垫是否合格 ", "  位置1载体#1 2DMC追溯号 ",
				"  位置1载体#1已重复使用次数  ", "  位置1载体#1测量测量设备编号 ", "  位置1载体#1测量配方号与版本 ", "  位置1载体#1测量平面序号 ",
				"  位置1载体#1最小直径（每个平面） ", "  位置1载体#1最大直径（每个平面） ", "  位置1载体#1周长（每个平面） ", "  位置1载体#1周长（所有平面） ",
				"  位置1载体#1面积（每个平面） ", "  位置1载体#1面积（所有平面） ", "  位置1载体#1平均直径（每个平面） ", "  位置1载体#1平均直径（所有平面） ",
				"  位置1载体#1载体高度 ", "  位置1载体#1是否合格 ", "  位置1载体#1测量环境温度 ", "  位置1载体#2 2DMC追溯号 ", "  位置1载体#2已重复使用次数  ",
				"  位置1载体#2测量测量设备编号 ", "  位置1载体#2测量配方号与版本 ", "  位置1载体#2测量平面序号 ", "  位置1载体#2最小直径（每个平面） ",
				"  位置1载体#2最大直径（每个平面） ", "  位置1载体#2周长（每个平面） ", "  位置1载体#2周长（所有平面） ", "  位置1载体#2面积（每个平面） ",
				"  位置1载体#2面积（所有平面） ", "  位置1载体#2平均直径（每个平面） ", "  位置1载体#2平均直径（所有平面） ", "  位置1载体#2载体高度 ",
				"  位置1载体#2是否合格 ", "  位置1载体#2测量环境温度 ", "  位置2载体#1 2DMC追溯号 ", "  位置2载体#1已重复使用次数  ", "  位置2载体#1测量测量设备编号 ",
				"  位置2载体#1测量配方号与版本 ", "  位置2载体#1测量平面序号 ", "  位置2载体#1最小直径（每个平面） ", "  位置2载体#1最大直径（每个平面） ",
				"  位置2载体#1周长（每个平面） ", "  位置2载体#1周长（所有平面） ", "  位置2载体#1面积（每个平面） ", "  位置2载体#1面积（所有平面） ",
				"  位置2载体#1平均直径（每个平面） ", "  位置2载体#1平均直径（所有平面） ", "  位置2载体#1载体高度 ", "  位置2载体#1是否合格 ", "  位置2载体#1测量环境温度 ",
				"  位置2载体#2 2DMC追溯号 ", "  位置2载体#2已重复使用次数  ", "  位置2载体#2测量测量设备编号 ", "  位置2载体#2测量配方号与版本 ",
				"  位置2载体#2测量平面序号 ", "  位置2载体#2最小直径（每个平面） ", "  位置2载体#2最大直径（每个平面） ", "  位置2载体#2周长（每个平面） ",
				"  位置2载体#2周长（所有平面） ", "  位置2载体#2面积（每个平面） ", "  位置2载体#2面积（所有平面） ", "  位置2载体#2平均直径（每个平面） ",
				"  位置2载体#2平均直径（所有平面） ", "  位置2载体#2载体高度 ", "  位置2载体#2是否合格 ", "  位置2载体#2测量环境温度 ", "  位置3载体#1 2DMC追溯号 ",
				"  位置3载体#1已重复使用次数  ", "  位置3载体#1测量测量设备编号 ", "  位置3载体#1测量配方号与版本 ", "  位置3载体#1测量平面序号 ",
				"  位置3载体#1最小直径（每个平面） ", "  位置3载体#1最大直径（每个平面） ", "  位置3载体#1周长（每个平面） ", "  位置3载体#1周长（所有平面） ",
				"  位置3载体#1面积（每个平面） ", "  位置3载体#1面积（所有平面） ", "  位置3载体#1平均直径（每个平面） ", "  位置3载体#1平均直径（所有平面） ",
				"  位置3载体#1载体高度 ", "  位置3载体#1是否合格 ", "  位置3载体#1测量环境温度 ", "  位置3载体#2 2DMC追溯号 ", "  位置3载体#2已重复使用次数  ",
				"  位置3载体#2测量测量设备编号 ", "  位置3载体#2测量配方号与版本 ", "  位置3载体#2测量平面序号 ", "  位置3载体#2最小直径（每个平面） ",
				"  位置3载体#2最大直径（每个平面） ", "  位置3载体#2周长（每个平面） ", "  位置3载体#2周长（所有平面） ", "  位置3载体#2面积（每个平面） ",
				"  位置3载体#2面积（所有平面） ", "  位置3载体#2平均直径（每个平面） ", "  位置3载体#2平均直径（所有平面） ", "  位置3载体#2载体高度 ",
				"  位置3载体#2是否合格 ", "  位置3载体#2测量环境温度 ", "  位置1包裹组件塞入顺序 ", "  位置1包裹组件塞入设备编号与塞入端 ", "  位置1包裹组件塞入时间 ",
				"  位置1包裹组件塞入位置 ", "  位置1包裹组件塞入过程峰值力  ", "  位置1包裹组件塞入过程峰值力产生位置  ", "  位置2包裹组件塞入顺序 ",
				"  位置2包裹组件塞入设备编号与塞入端 ", "  位置2包裹组件塞入时间 ", "  位置2包裹组件塞入位置 ", "  位置2包裹组件塞入过程峰值力  ",
				"  位置2包裹组件塞入过程峰值力产生位置  ", "  位置3包裹组件塞入顺序 ", "  位置3包裹组件塞入设备编号与塞入端 ", "  位置3包裹组件塞入时间 ", "  位置3包裹组件塞入位置 ",
				"  位置3包裹组件塞入过程峰值力  ", "  位置3包裹组件塞入过程峰值力产生位置  ", "  位置1载体1#整形顺序 ", "  位置1载体1#整形设备编号 ",
				"  位置1载体#1整形配方号与版本 ", "  位置1载体1#整形时间 ", "  位置1载体1#整形目标值计算方式  ", "  位置1载体1#整形目标值  ",
				"  位置1载体1#整形补偿后目标值 ", "  位置1载体1#整形机实际加工值 ", "  位置1载体2#整形顺序 ", "  位置1载体2#整形设备编号 ", "  位置1载体#2整形配方号与版本 ",
				"  位置1载体2#整形时间 ", "  位置1载体2#整形目标值计算方式  ", "  位置1载体2#整形目标值  ", "  位置1载体2#整形补偿后目标值 ",
				"  位置1载体2#整形机实际加工值 ", "  位置2载体1#整形顺序 ", "  位置2载体1#整形设备编号 ", "  位置2载体#1整形配方号与版本 ", "  位置2载体1#整形时间 ",
				"  位置2载体1#整形目标值计算方式  ", "  位置2载体1#整形目标值  ", "  位置2载体1#整形补偿后目标值 ", "  位置2载体1#整形机实际加工值 ",
				"  位置2载体2#整形顺序 ", "  位置2载体2#整形设备编号 ", "  位置2载体#2整形配方号与版本 ", "  位置2载体2#整形时间 ", "  位置2载体2#整形目标值计算方式  ",
				"  位置2载体2#整形目标值  ", "  位置2载体2#整形补偿后目标值 ", "  位置2载体2#整形机实际加工值 ", "  位置3载体1#整形顺序 ", "  位置3载体1#整形设备编号 ",
				"  位置3载体#1整形配方号与版本 ", "  位置3载体1#整形时间 ", "  位置3载体1#整形目标值计算方式  ", "  位置3载体1#整形目标值  ",
				"  位置3载体1#整形补偿后目标值 ", "  位置3载体1#整形机实际加工值 ", "  位置3载体2#整形顺序 ", "  位置3载体2#整形设备编号 ", "  位置3载体#2整形配方号与版本 ",
				"  位置3载体2#整形时间 ", "  位置3载体2#整形目标值计算方式  ", "  位置3载体2#整形目标值  ", "  位置3载体2#整形补偿后目标值 ",
				"  位置3载体2#整形机实际加工值 ", "  进气端口整形顺序  ", "  进气端口整形设备编号  ", "  进气端口整形配方号与版本  ", "  进气端口整形时间  ",
				"  进气端口整形目标值计算方式 ", "  进气端口整形目标值 ", "  进气端口整形补偿后目标值  ", "  进气端口整形机实际加工值  ", "  出气端口整形顺序  ",
				"  出气端口整形设备编号  ", "  出气端口整形配方号与版本  ", "  出气端口整形时间  ", "  出气端口整形目标值计算方式 ", "  出气端口整形目标值 ",
				"  出气端口整形补偿后目标值  ", "  出气端口整形机实际加工值  ", "  组件重复测量次数  ", "  组件测量设备编号  ", "  组件测量配方号与版本  ",
				"  组件位置1载体#1测量平面序号 ", "  组件位置1载体#1最小直径（每个平面） ", "  组件位置1载体#1最大直径（每个平面） ", "  组件位置1载体#1周长（每个平面） ",
				"  组件位置1载体#1周长（所有平面） ", "  组件位置1载体#1面积（每个平面） ", "  组件位置1载体#1面积（所有平面） ", "  组件位置1载体#1平均直径（每个平面） ",
				"  组件位置1载体#1平均直径（所有平面） ", "  组件位置1载体#1特殊特性值计算方式  ", "  组件位置1载体#1特殊特性值（每个平面）  ",
				"  组件位置1载体#1特殊特性值（所有平面）  ", "  组件位置1载体#1整形区域是否合格 ", "  组件位置1载体#2测量平面序号 ", "  组件位置1载体#2最小直径（每个平面） ",
				"  组件位置1载体#2最大直径（每个平面） ", "  组件位置1载体#2周长（每个平面） ", "  组件位置1载体#2周长（所有平面） ", "  组件位置1载体#2面积（每个平面） ",
				"  组件位置1载体#2面积（所有平面） ", "  组件位置1载体#2平均直径（每个平面） ", "  组件位置1载体#2平均直径（所有平面） ", "  组件位置1载体#2特殊特性值计算方式  ",
				"  组件位置1载体#2特殊特性值（每个平面）  ", "  组件位置1载体#2特殊特性值（所有平面）  ", "  组件位置1载体#2整形区域是否合格 ", "  组件位置2载体#1测量平面序号 ",
				"  组件位置2载体#1最小直径（每个平面） ", "  组件位置2载体#1最大直径（每个平面） ", "  组件位置2载体#1周长（每个平面） ", "  组件位置2载体#1周长（所有平面） ",
				"  组件位置2载体#1面积（每个平面） ", "  组件位置2载体#1面积（所有平面） ", "  组件位置2载体#1平均直径（每个平面） ", "  组件位置2载体#1平均直径（所有平面） ",
				"  组件位置2载体#1特殊特性值计算方式  ", "  组件位置2载体#1特殊特性值（每个平面）  ", "  组件位置2载体#1特殊特性值（所有平面）  ",
				"  组件位置2载体#1整形区域是否合格 ", "  组件位置2载体#2测量平面序号 ", "  组件位置2载体#2最小直径（每个平面） ", "  组件位置2载体#2最大直径（每个平面） ",
				"  组件位置2载体#2周长（每个平面） ", "  组件位置2载体#2周长（所有平面） ", "  组件位置2载体#2面积（每个平面） ", "  组件位置2载体#2面积（所有平面） ",
				"  组件位置2载体#2平均直径（每个平面） ", "  组件位置2载体#2平均直径（所有平面） ", "  组件位置2载体#2特殊特性值计算方式  ",
				"  组件位置2载体#2特殊特性值（每个平面）  ", "  组件位置2载体#2特殊特性值（所有平面）  ", "  组件位置2载体#2整形区域是否合格 ", "  组件位置3载体#1测量平面序号 ",
				"  组件位置3载体#1最小直径（每个平面） ", "  组件位置3载体#1最大直径（每个平面） ", "  组件位置3载体#1周长（每个平面） ", "  组件位置3载体#1周长（所有平面） ",
				"  组件位置3载体#1面积（每个平面） ", "  组件位置3载体#1面积（所有平面） ", "  组件位置3载体#1平均直径（每个平面） ", "  组件位置3载体#1平均直径（所有平面） ",
				"  组件位置3载体#1特殊特性值计算方式  ", "  组件位置3载体#1特殊特性值（每个平面）  ", "  组件位置3载体#1特殊特性值（所有平面）  ",
				"  组件位置3载体#1整形区域是否合格 ", "  组件位置3载体#2测量平面序号 ", "  组件位置3载体#2最小直径（每个平面） ", "  组件位置3载体#2最大直径（每个平面） ",
				"  组件位置3载体#2周长（每个平面） ", "  组件位置3载体#2周长（所有平面） ", "  组件位置3载体#2面积（每个平面） ", "  组件位置3载体#2面积（所有平面） ",
				"  组件位置3载体#2平均直径（每个平面） ", "  组件位置3载体#2平均直径（所有平面） ", "  组件位置3载体#2特殊特性值计算方式  ",
				"  组件位置3载体#2特殊特性值（每个平面）  ", "  组件位置3载体#2特殊特性值（所有平面）  ", "  组件位置3载体#2整形区域是否合格 ", "  组件进气端口平均直径  ",
				"  组件进气端口最小直径  ", "  组件进气端口最大直径  ", "  组件进气端口是否合格  ", "  组件出气端口平均直径  ", "  组件出气端口最小直径  ",
				"  组件出气端口最大直径  ", "  组件出气端口是否合格  ", "  组件高度  ", "  组件是否合格  ", "  组件测量环境温度  ", "  工艺过程序号  ",
				"  标刻内容配方号与版本  ", "  标刻客户2DMC内容  ", "  扫描客户2DMC内容  ", "  扫描客户2DMC等级  ", "扫描客户2DMC内容  " };
		// 创建数据模型
		HashMap rootMap = new HashMap();
		// 列名
		rootMap.put("columnName", columnName);
		// 排序字段
		rootMap.put("id", id);
		// 主键
		rootMap.put("key", key);
		// 文件名称
		rootMap.put("fileName", fileName);
		// 文件标题
		rootMap.put("title", tile);
		// 实体名称
		rootMap.put("name", name);
		// javaBean的类名
		rootMap.put("className", claaName);
		rootMap.put("colu", colu);
		// javaBean的类名的所有属性名称
		rootMap.put("property", property);
		// javaBean的类名的所有属性名称
		rootMap.put("propertyType", propertyType);
		// controller名称
		rootMap.put("controller", fileName + "Controller");
		// 添加名称
		rootMap.put("add", "add" + fileName.substring(0, 1).toUpperCase() + fileName.substring(1));
		// 更新名称
		rootMap.put("update", "update" + fileName.substring(0, 1).toUpperCase() + fileName.substring(1));
		// 删除，名称
		rootMap.put("delete", "delete" + fileName.substring(0, 1).toUpperCase() + fileName.substring(1));
		// 查询所有
		rootMap.put("getAll", "getAll" + fileName.substring(0, 1).toUpperCase() + fileName.substring(1));
		// 查询详细记录
		rootMap.put("search", "add" + fileName.substring(0, 1).toUpperCase() + fileName.substring(1));
		// service
		rootMap.put("service", fileName + "Service");
		// mapper名称
		rootMap.put("mapper", claaName + "Mapper");
		// getCount方法名称
		rootMap.put("getCountFun", "getCount");

		shwoJsp(rootMap, cfg);
		Addjsp(rootMap, cfg);
		controllerJava(rootMap, cfg);
		serviceJava(rootMap, cfg);
		serviceImplJava(rootMap, cfg);
		mapperXml(rootMap, cfg);
	}

	// 生成查看页面
	public static void shwoJsp(HashMap rootMap, Configuration cfg) throws TemplateNotFoundException,
			MalformedTemplateNameException, ParseException, IOException, TemplateException {
		// 加载模板文件
		Template t = cfg.getTemplate("show.ftl");
		File file = new File("D:/jsp/src/" + rootMap.get("fileName") + ".jsp");
		OutputStream out = new FileOutputStream(file);
		BufferedWriter rd = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));
		t.process(rootMap, rd);
		rd.close();
		out.flush();
		out.close();
	}

	// 生成编辑页面
	public static void Addjsp(HashMap rootMap, Configuration cfg) throws TemplateNotFoundException,
			MalformedTemplateNameException, ParseException, IOException, TemplateException {
		// 加载模板文件
		Template t = cfg.getTemplate("add.ftl");
		File file = new File("D:/jsp/src/" + rootMap.get("fileName") + "Add.jsp");
		OutputStream out = new FileOutputStream(file);
		BufferedWriter rd = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));
		t.process(rootMap, rd);
		rd.close();
		out.flush();
		out.close();
	}

	// 生成controller文件
	public static void controllerJava(HashMap rootMap, Configuration cfg) throws TemplateNotFoundException,
			MalformedTemplateNameException, ParseException, IOException, TemplateException {
		// 加载模板文件
		Template t = cfg.getTemplate("controller.ftl");
		File file = new File("D:/jsp/src/" + rootMap.get("fileName").toString().substring(0, 1).toUpperCase()
				+ rootMap.get("fileName").toString().substring(1) + "Controller.java");
		OutputStream out = new FileOutputStream(file);
		BufferedWriter rd = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));
		t.process(rootMap, rd);
		rd.close();
		out.flush();
		out.close();
	}

	// 生成service文件
	public static void serviceJava(HashMap rootMap, Configuration cfg) throws TemplateNotFoundException,
			MalformedTemplateNameException, ParseException, IOException, TemplateException {
		// 加载模板文件
		Template t = cfg.getTemplate("service.ftl");
		File file = new File("D:/jsp/src/" + rootMap.get("fileName").toString().substring(0, 1).toUpperCase()
				+ rootMap.get("fileName").toString().substring(1) + "Service.java");
		OutputStream out = new FileOutputStream(file);
		BufferedWriter rd = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));
		t.process(rootMap, rd);
		rd.close();
		out.flush();
		out.close();
	}

	// 生成serviceImpl文件
	public static void serviceImplJava(HashMap rootMap, Configuration cfg) throws TemplateNotFoundException,
			MalformedTemplateNameException, ParseException, IOException, TemplateException {
		// 加载模板文件
		Template t = cfg.getTemplate("serviceImpl.ftl");
		File file = new File("D:/jsp/src/" + rootMap.get("fileName").toString().substring(0, 1).toUpperCase()
				+ rootMap.get("fileName").toString().substring(1) + "ServiceImpl.java");
		OutputStream out = new FileOutputStream(file);
		BufferedWriter rd = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));
		t.process(rootMap, rd);
		rd.close();
		out.flush();
		out.close();
	}

	// 生成mapper.xml文件(方法实现)
	public static void mapperXml(HashMap rootMap, Configuration cfg) throws TemplateNotFoundException,
			MalformedTemplateNameException, ParseException, IOException, TemplateException {
		// 加载模板文件
		Template t = cfg.getTemplate("mapperXml.ftl");
		File file = new File("D:/jsp/src/" + rootMap.get("fileName") + "mapper.xml");
		OutputStream out = new FileOutputStream(file);
		BufferedWriter rd = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));
		t.process(rootMap, rd);
		rd.close();
		out.flush();
		out.close();
	}

	public static void main1(String[] args) throws IOException, TemplateException {
		// TODO Auto-generated method stub
		// 创建Freemarker配置实例
		Configuration cfg = new Configuration(new Version("2.3.25"));
		cfg.setDirectoryForTemplateLoading(new File("D:/spring-web/TNC/src/template"));
		// 创建数据模型
		HashMap rootMap = new HashMap();
		rootMap.put("title", "载体数据");
		rootMap.put("name", "载体");

		// rootMap.put("random", new Random().nextInt(100));
		// List a=new ArrayList();
		//// a.add(new Address("中国","北京"));
		//// a.add(new Address("英国","纽约"));
		//// a.add(new Address("美国","华盛顿"));
		//// a.add(new Address("日本","东京"));
		// rootMap.put("lst",a);
		// rootMap.put("date1",new Date());

		// 加载模板文件
		Template t1 = cfg.getTemplate("show.ftl");
		// 显示生成的数据
		OutputStreamWriter out2 = new OutputStreamWriter(System.out);
		File file = new File("D:/jsp/src/test.jsp");
		OutputStream out = new FileOutputStream(file);
		BufferedWriter rd = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));
		t1.process(rootMap, rd);
		rd.close();
		out.flush();
		out.close();

	}

}
